#!@PYTHON@
import sys
import getopt
import subprocess
from sys import argv
try:
    import zbar
except ImportError as e:
    print('Cannot run gnunet-qr, please install zbar-python')
    sys.exit(1)


def help():
    print('gnunet-qr\n\
Scan a QR code using a video device and import\n\
Arguments mandatory for long options are also mandatory for short options.\n\
  -c, --config=FILENAME      use configuration file FILENAME\n\
  -d, --device=DEVICE        use device DEVICE\n\
  -s, --silent               do not show preview windows\n\
  -h, --help                 print this help\n\
  -v, --verbose              be verbose\n\
Report bugs to gnunet-developers@gnu.org.\n\
GNUnet home page: http://www.gnu.org/software/gnunet/\n\
General help using GNU software: http://www.gnu.org/gethelp/')


if __name__ == '__main__':
        configuration = ''
        device = '/dev/video0'
        url = ''
        verbose = False
        silent = False
        # Parse arguments
        try:
                opts, args = getopt.gnu_getopt(sys.argv[1:], "c:hd:sv", ["config", "help", "device", "silent", "verbose"])
        except getopt.GetoptError as e:
                help()
                print(str(e))
                exit(1)
        for o, a in opts:
                if o in ("-h", "--help"):
                        help()
                        sys.exit(0)
                elif o in ("-c", "--config"):
                        configuration = a
                elif o in ("-d", "--device"):
                        device = a
                elif o in ("-s", "--silent"):
                        silent = True
                elif o in ("-v", "--verbose"):
                        verbose = True
        if (True == verbose):
                print('Initializing')
        # create a Processor
        proc = zbar.Processor()

        # configure the Processor
        proc.parse_config('enable')

        # initialize the Processor
        try:
                if (True == verbose):
                        print('Opening video device ' + device)
                proc.init(device)
        except Exception as e:
                print('Failed to open device ' + device)
                exit(1)

        # enable the preview window
        # if (True == silent):
        #       proc.visible = True
        # else:
        #               proc.visible = False

        proc.visible = True
        # read at least one barcode (or until window closed)
        try:
                if (True == verbose):
                        print('Capturing')
                proc.process_one()
        except Exception as e:
                # Window was closed without finding code
                exit(1)

        # hide the preview window
        proc.visible = False

        # extract results
        for symbol in proc.results:
                # do something useful with results
                if (True == verbose):
                        print('Found ', symbol.type, ' symbol ', '"%s"' % symbol.data)
                args = list()
                args.append("gnunet-uri")
                if (configuration != ''):
                        args.append(str("-c " + str(configuration)))
                args.append(str(symbol.data))
                cmd = ''
                for a in args:
                        cmd += " " + str(a)
                if (verbose):
                        print('Running `' + cmd +'`')
                res=subprocess.call(args)
                if (0 != res):
                        print('Failed to add URI ' + str(symbol.data))
                else:
                        print('Added URI ' + str(symbol.data))
                exit(res)
        exit(1)
